In many applications a data processing system such as a computer or a phone needs to protect the information being processed from unauthorized access and/or use. For example, a data processing system may process sensitive information such as financial data or personal information that should only be accessible by authorized persons. Also, a data processing system may be used to provide conditional access to fee-based services. As an example, a data processing system may restrict access to media content such as music or software to those users who have paid the required fee.
A typical data processing system may employ cryptographic techniques to protect such information. For example, in some applications the system may encrypt sensitive data and restrict access to the cryptographic keys that decrypt the data. In addition, in some applications cryptographic techniques relating to authentication, verification and digital signatures may be used to ensure that information originates from or is sent to a specific person or a specific component in a system.
As an example of the former application, sensitive financial or personal information may need to be stored in a data storage device or transmitted over a data network. To prevent unauthorized persons from accessing the information while it is stored or transmitted, the information may be encrypted using a cryptographic key. Once encrypted, the original information may only be extracted by decrypting the encrypted information using the cryptographic key or a complementary cryptographic key. By restricting access to these cryptographic keys, access to the information may be limited to authorized persons.
As an example of the latter application, authentication, signing and/or verification techniques may be used to verify that something (e.g., information, a communicating entity, etc.) is what it purports to be. Here, cryptographic techniques may be used to verify that information originates from a particular party/device. Cryptographic techniques also may be used to verify that the information has not been altered from its original form.
To ensure that sensitive information is adequately protected, the cryptographic processes performed in the system may need to be protected as well. That is, the system needs to prevent an unauthorized person or process from gaining access to the cryptographic processes and information used by those processes. Otherwise, the information may be compromised when it is in an unencrypted form, the keys may be comprised or important cryptographic-related decision making processes may be compromised. For example, if an unauthorized person gains access to the cryptographic keys that are used to decrypt and/or encrypt information, any information encrypted using such keys may be decrypted by the unauthorized person.
Conventionally, protected cryptographic processing may be provided by incorporating secure cryptographic components into a data processing system. For example, a dedicated cryptographic processor may be used to encrypt and decrypt information for the system. Here, when the main processor in the system executes a process that needs cryptographic services (e.g., data needs to be encrypted or decrypted), the main processor will transfer the task to the cryptographic processor. The cryptographic processor then performs the requested task, provides the processed (e.g., encrypted or decrypted) data to the appropriate destination and informs the main processor that the task has been completed. In this way, the cryptographically sensitive operations and components may be physically separated from other components in the system. As a result, even if the non-cryptographic components in the system are compromised, the cryptographic components and processes may remain secure.
Measures also may be taken to ensure that keys and/or other sensitive cryptographic material cannot be accessed by unauthorized persons or processes. For example, key material may be stored in encrypted form in data memory. In this way, even if the data memory is compromised, the keys may remain secure.
In some applications the above techniques may be relatively expensive to implement. As a result, these techniques may be impractical for use in end-user devices such as phones, PDAs, etc. that need to be made as inexpensively and as small as possible. Accordingly, a need exists for more effective techniques for providing cryptographic services in a data processing system.